/**
 * 防抖函数
 */
export function debounce(func, wait) {
  let timerId;
  return function (...args) {
    clearTimeout(timerId);
    timerId = setTimeout(() => {
      func.apply(this, args);
    }, wait);
  };
}

/**
 * 节流函数
 */
export function throttle(func, wait) {
  let startTime = 0;
  return function newFn() {
    const endTime = Date.now();
    if (endTime - startTime > wait) {
      // this指向绑定事件元素
      // 让func this指向绑定事件元素
      func.apply(this, arguments);
      startTime = endTime;
    }
  };
}

/*
  btn.onclick = function (e) {
    this -> btn
  } 

  btn.onclick = throttle(function () {
    // 希望：this -> btn
  }, 1000)

    ->

    const newFn = throttle(function () {
      // 希望：this -> btn
    }, 1000)

    // newFn是哪个函数？throttle返回的函数
    // newFn函数this指向？指向btn
    btn.onclick = newFn;
*/
